package composite;

import java.util.ArrayList;
import java.util.List;

/**组合模式
 * 其实组合模式主要是用于树形结构的组织，我们这边以公司的一个架构来做，
 * @author zj
 *
 *既然要使用组合模式，那么我们就要先想清楚需要哪些东西，首先增加是必须要有的，还有就是删除，还有就是打印信息，，打印信息是所以都共有的，那么我们可以将他抽象到类里面
 */

public class Test {

	public static void main(String[] args) {
		Ibarnch c=new Ibarnch("张三", "经理", 10000);
		Ibarnch c1=new Ibarnch("李四", "研发", 8000);
		Ibarnch c2=new Ibarnch("王二", "销售", 40000);
		Ibarnch c3=new Ibarnch("麻子", "售前", 60000);
		
		Component l=new Leaf("张燕", "秘书", 6000);
		Component l1=new Leaf("李燕", "研发", 6000);
		Component l2=new Leaf("王燕", "研发", 6000);
		Component l3=new Leaf("苏婷", "销售", 4000);
		Component l4=new Leaf("江燕", "售前", 6000);
		
		c.add(c3);
		c.add(c2);
		c.add(c1);
		c.add(l);
		c1.add(l1);
		c1.add(l2);
		c2.add(l3);
		c2.add(l4);
		c.getInfo();
		info(c);
		
				
	}
	public static void  info(Ibarnch i) {
		List<Component> list=i.getList();
		for(Component c:list) {
			if(c instanceof Leaf)
				c.getInfo();
			else {
				
				info((Ibarnch) c);
				c.getInfo();
			}
		}
	}
}
